public class code1 {
    // Top 101 判断链表中是否有环

    public boolean hasCycle(ListNode head) {
        // 针对这个问题，通过快慢指针来进行解决
        // 首先来判断一下，当该链表为 null 的时候的情况
        if(head == null || head.next == null) {
            return false;
        }
        // 这里我们定义两个快慢指针，快指针的速度是慢指针的 2 倍
        ListNode slow = head;
        ListNode quick = head;

        // 只要这里的两个指针不为 null 就一直进行 while 循环
        // 这里需要注意的是，这里的判断条件不能写为 （slow != null || quick != null）
        // 这里的 quick 是要两次 next 的，需要判断的是 不能 指到 null
        // 但是 quick 比 slow 要快的，所以只针对 quick 进行判断即可
        while(quick != null && quick.next != null) {
            slow = slow.next;
            quick = quick.next.next;
            if(slow == quick) {
                return true;
            }
        }
        return false;
    }
}
